(* ------TUPLES----- *)

(* type etudiant = (string * string * int * bool);; *)

(* let get_first_name (prenom, nom, promotion, close) = prenom;; *)
(* let get_last_name (prenom, nom, promotion, close) = nom;; *)
(* let get_promotion (prenom, nom, promotion, close) = promotion;; *)
(* let is_close (prenom, nom, promotion, close) = close;; *)

(* let is_in_promo (prenom, nom, promotion, close) c = *)
(*   if c == promotion *)
(*   then true *)
(*   else *)
(*     false *)
(* ;; *)

(* let rec is_in_promo_range (prenom, nom, promotion, close) x y = *)
(*   if is_in_promo (prenom, nom, promotion, close) x && x <= y *)
(*   then true *)
(*   else if x <= y *)
(*   then *)
(*     is_in_promo_range (prenom, nom, promotion, close) (x + 1) y *)
(*   else *)
(*     false *)
(* ;; *)

(* let jouss = ("Florian", "Jouss", 2015, false) *)
(* ;; *)


(* ----RECORDS----- *)
(* type etudiant = {first_name : string; last_name : string; promotion : int; close : bool};; *)

(* let get_first_name etudiant = etudiant.first_name;; *)
(* let get_last_name etudiant = etudiant.last_name;; *)
(* let get_promotion etudiant = etudiant.promotion;; *)
(* let is_close etudiant = etudiant.close;; *)

(* let is_in_promo etudiant c = *)
(*   if c == etudiant.promotion *)
(*   then true *)
(*   else *)
(*     false *)
(* ;; *)

(* let rec is_in_promo_range etudiant x y = *)
(*   if is_in_promo etudiant x && x <= y *)
(*   then true *)
(*   else if x <= y *)
(*   then *)
(*     is_in_promo_range etudiant (x + 1) y *)
(*   else *)
(*     false *)
(* ;; *)

(* let jouss = {first_name = "Florian"; last_name = "Jouss"; promotion = 2015; close = false} *)
(* ;; *)

(* --------VARIANTS----------- *)
(* type day = *)
(*   |Lundi *)
(*   |Mardi *)
(*   |Mercredi *)
(*   |Jeudi *)
(*   |Vendredi *)
(*   |Samedi *)
(*   |Dimanche *)

(* type month = *)
(*   |Janvier *)
(*   |Fevrier *)
(*   |Mars *)
(*   |Avril *)
(*   |Mai *)
(*   |Juin *)
(*   |Juillet *)
(*   |Aout *)
(*   |Spetembre *)
(*   |Octobre *)
(*   |Novembre *)
(*   |Decembre *)
(* ;; *)

(* let next_day = function *)
(*   |Lundi -> Mardi *)
(*   |Mardi -> Mercredi *)
(*   |Mercredi -> Jeudi *)
(*   |Jeudi -> Vendredi *)
(*   |Vendredi -> Samedi *)
(*   |Samedi -> Dimanche *)
(*   |Dimanche -> Lundi *)
(* ;; *)

(* let next_month = function *)
(*   |Janvier -> Fevrier *)
(*   |Fevrier -> Mars *)
(*   |Mars -> Avril *)
(*   |Avril -> Mai *)
(*   |Mai -> Juin *)
(*   |Juin -> Juillet *)
(*   |Juillet -> Aout *)
(*   |Aout -> Spetembre *)
(*   |Spetembre -> Octobre *)
(*   |Octobre -> Novembre *)
(*   |Novembre -> Decembre *)
(*   |Decembre -> Janvier *)
(* ;; *)

(* let is_bissextile n = *)
(*   if ((((n mod 4) == 0) && ((n mod 100) != 0)) || ((n mod 400) == 0)) *)
(*   then *)
(*     true *)
(*   else *)
(*     false *)
(* ;; *)

(* let nb_days c = function *)
(*   |Janvier -> 31 *)
(*   |Fevrier -> *)
(*     if is_bissextile c == true *)
(*     then 29 *)
(*     else 28 *)
(*   |Mars -> 31 *)
(*   |Avril -> 30 *)
(*   |Mai -> 31 *)
(*   |Juin -> 30 *)
(*   |Juillet -> 31 *)
(*   |Aout -> 31 *)
(*   |Spetembre -> 30 *)
(*   |Octobre -> 31 *)
(*   |Novembre -> 30 *)
(*   |Decembre -> 31 *)
(* ;; *)

(* let next_nday nb month year = *)
(*   if (nb == nb_days year month) *)
(*   then *)
(*     (1, true) *)
(*   else *)
(*     (nb + 1, false) *)
(* ;; *)

(* let get_bool (c, bol) = bol *)
(* ;; *)

(* let next (day, nb, month, year) = *)
(*   if (get_bool(next_nday nb month year) == true) *)
(*   then *)
(*     if (month == Decembre) *)
(*     then *)
(*       (next_day day, 1, next_month month, year + 1) *)
(*     else *)
(*       (next_day day, 1, next_month month, year) *)
(*   else *)
(*     (next_day day, nb + 1, month, year) *)

(* -----list------ *)

let rec iter fct = function
  | [] -> ()
  | tete::reste ->
    begin
      fct tete;
      iter fct reste
    end
;;

(* print_endline(get_first_name(jouss)) *)
(* ;; *)
